a00f9747d5d2a2c45a559699b0a46e6de0890420,enterprise/main/java/org/neo4j/kernel/ha/zookeeper/ZooClient.java,ZooClient,process,#WatchedEvent#,55

Before Change


            }
            else if ( path == null && event.getState() == Watcher.Event.KeeperState.SyncConnected )
            {
                Pair<Master, Machine> cachedMaster = getCachedMaster();
                Pair<Master, Machine> masterBeforeIWrite = getMasterFromZooKeeper( false );
                System.out.println( "Get master before write:" + masterBeforeIWrite );
                sequenceNr = setup();
                System.out.println( "did setup" );
                keeperState = KeeperState.SyncConnected;
                Pair<Master, Machine> currentMaster = getMasterFromZooKeeper( false );
                System.out.println( "current master " + currentMaster );
                
                // Master has changed since last time I checked and it's not me
                if ( (cachedMaster.other().getMachineId() == -1 || currentMaster.other().getMachineId() != masterBeforeIWrite.other().getMachineId()) &&
                        currentMaster.other().getMachineId() != machineId )
                {
                    System.out.println( "Master changed and it's not me" );
                    setDataChangeWatcher( MASTER_NOTIFY_CHILD, currentMaster.other().getMachineId() );
                    receiver.newMaster( currentMaster, new Exception() );
                }
                else if ( /*masterBeforeIWrite.other().getMachineId() == -1  && */
                        currentMaster.other().getMachineId() == machineId )
                {
                    System.out.println( "2" );
                    receiver.newMaster( currentMaster, new Exception() );
                }
            }
            else if ( path == null && event.getState() == Watcher.Event.KeeperState.Disconnected )

After Change


                keeperState = KeeperState.SyncConnected;
                Pair<Master, Machine> masterAfterIWrote = getMasterFromZooKeeper( false );
                System.out.println( "Get master after write:" + masterAfterIWrote );
                int masterId = masterAfterIWrote.other().getMachineId();
                if ( masterBeforeIWrite.other().getMachineId() != masterId && masterId != machineId )
                {
                    setDataChangeWatcher( MASTER_NOTIFY_CHILD, masterId );
                }
                receiver.newMaster( masterAfterIWrote, new Exception() );
            }
            else if ( path == null && event.getState() == Watcher.Event.KeeperState.Disconnected )
            {